In data processing systems, programming interfaces are used to specify the way in which application programs communicate with system facilities--usually other programs running on the system, which typically control hardware facilities, such as communications adapters, storage devices and graphics cards, but can be software kernels providing, for example, database or document formatting facilities. These programming interfaces generally, but not exclusively, take the form of a library of subroutines which relate a common set of calls to tasks to be performed by the facility concerned.
Currently, programming interfaces that can be supported by the products of different manufacturers are being defined by standards bodies around the world. Each manufacturer uses an implementation of a standard programming interface tailored for their own products. An application program written to such a standard programming interface can then operate correctly with the products of different manufacturers. An example of this is the common ISDN Application Programming Interface defined by Deutsche Bundespost.
However, one problem with the use of such standard programming interfaces is that concurrent operation with more than one facility through the same programming interface cannot be achieved. This problem arises, for example, when more than one communication adapter using the ISDN API is installed in a data processing system. When the application calls the interface, the system does not know which implementation of the interface to use.